// 定义26个字母出现的次数
#define MAX 26
int alphaCnt[MAX];

char *sortString(char *s)
{
    int len = strlen(s);
    int i;
    int j;
    int m;
    char idx;
    if (len <= 1)
    {
        return s;
    }
    memset(alphaCnt, 0, MAX * sizeof(int));
    // 统计各个字母出现的次数
    for (i = 0; i < len; i++)
    {
        idx = s[i] - 'a';
        alphaCnt[idx]++;
    }
    for (m = 0; m < len;)
    {
        // 第一遍选最小
        for (i = 0; i < MAX; i++)
        {
            if (alphaCnt[i] > 0)
            {
                s[m++] = i + 'a';
                alphaCnt[i]--;
            }
        }
        // 第二遍选最大
        for (i = MAX - 1; i >= 0; i--)
        {
            if (alphaCnt[i] > 0)
            {
                s[m++] = i + 'a';
                alphaCnt[i]--;
            }
        }
    }

    return s;
}